package com.wangdong.wdbase;

import java.util.ArrayList;
import java.util.WeakHashMap;


public class AppManager {
    //	静态 接口 AppListener
    public static interface AppListener {
        //		接口里的方法 更新数据  参数 一个Object和 String tag标签，标志
        public void update(Object obj, String tag);
    }

    //	静态 类对象
    private static AppManager manager;

    //	创建一个WeaKHashMap保存Applistener
    private WeakHashMap<AppListener, Void> mListeners = new WeakHashMap<AppListener, Void>();

    private Object obj;
    private String tag;

    //	单利 类对象
    public static AppManager getInstance() {
        if (manager == null) {
            manager = new AppManager();
        }
        return manager;
    }

    //  类空参构造
    private AppManager() {
        super();
    }

    //	 类方法公开 的更新数据 设置类 属性，给object赋值，给tag赋值   并调用 类 私有方法update
    public void update(Object object, String tag) {
        obj = object;
        this.tag = tag;
        update();
    }

    //	添加一个  AppListener接口 到 weakHashMap中
    public void addListener(AppListener listener) {
        mListeners.put(listener, null);
    }

    //  移除一个 AppListstener接口
    public void removeListener(AppListener listener) {
        mListeners.remove(listener);
    }

    //	类私有 方法
    private void update() {
        //		创建一个 applistener 的key集合
        ArrayList<AppListener> allListeners = new ArrayList<AppListener>(
                mListeners.keySet());
        //		遍历 applistener key集合
        for (AppListener aListener : allListeners) {
            //			每个applistener 对象 都执行一下更新的方法
            aListener.update(obj, tag);
        }
    }
}